jQuery.fn.pageRender = function(pageIndex, pageSize, pageNum) {
    
    $(".page-size-selector").val(pageSize);
    $("#page_index").val(pageIndex);
    $("#page_size").val(pageSize);
    $("#page_num").val(pageNum);
    var strArray = new Array();
    for (var i = 1; i <= pageNum; i++) {
            strArray.push(' <a href="javascript:void(0);"');
        if (pageIndex == i) {
            strArray.push(' style="color: red;" ');
        } else {
            strArray.push(' class="page-index-num" ');
        }
        strArray.push('>');
        strArray.push(i);
        strArray.push('</a> ');
    }
    $(".page-index-selector").html(strArray.join(''));
    
    return this;
};
jQuery.fn.pageListener = function(dataFunction, queryObj) {
    if ($("#page_index").length == 0) {
        $(this).append('<input type="hidden" id="page_index" value="1" />');
    }
    if ($("#page_size").length == 0) {
        $(this).append('<input type="hidden" id="page_size" value="" />');
    }
    if ($("#page_num").length == 0) {
        $(this).append('<input type="hidden" id="page_num" value="" />');
    }
    
    $(".first-page").click(function() {
        var pageIndex = parseInt($("#page_index").val());
        var pageSize = parseInt($("#page_size").val());
        if (pageIndex > 1) {
            pageIndex = 1;
            $("#page_index").val(pageIndex);
            dataFunction(queryObj, pageIndex, pageSize);
        }
    });

    $(".last-page").click(function() {
        var pageIndex = parseInt($("#page_index").val());
        var pageSize = parseInt($("#page_size").val());
        var pageNum = parseInt($("#page_num").val());
        if (pageIndex < pageNum) {
            pageIndex = pageNum;
            $("#page_index").val(pageIndex);
            dataFunction(queryObj, pageIndex, pageSize);
        }
    });
    
    $(".previous-page").click(function() {
        var pageIndex = parseInt($("#page_index").val());
        var pageSize = parseInt($("#page_size").val());
        if (pageIndex > 1) {
            pageIndex --;
            $("#page_index").val(pageIndex);
            dataFunction(queryObj, pageIndex, pageSize);
        }
    });

    $(".next-page").click(function() {
        var pageIndex = parseInt($("#page_index").val());
        var pageSize = parseInt($("#page_size").val());
        var pageNum = parseInt($("#page_num").val());
        
        if (pageIndex < pageNum) {
            pageIndex ++;
            $("#page_index").val(pageIndex);
            dataFunction(queryObj, pageIndex, pageSize);
        }
    });

    $(".page-size-selector").change(function() {
        var pageIndex = parseInt($("#page_index").val());
        pageSize = $(this).val();
        $("#page_size").val(pageSize);
        dataFunction(queryObj, pageIndex, pageSize);
    });

    $(".page-index-num").live("click", function() {
        var page = $(this).text();
        pageIndex = page;
        var pageSize = parseInt($("#page_size").val());
        $("#page_index").val(pageIndex);
        dataFunction(queryObj, pageIndex, pageSize);
    });
    return this;
};
jQuery.fn.sortListener = function(dataFunction, queryObj, ascImg, descImg) {
    var selector = $(this).selector;
    $(this).each(function() {
        $(this).css("text-decoration", "underline");
    });
    $(this).click(function() {
        $(selector).each(function() {
            var thisObj = $(this);
            thisObj.html(thisObj.text());
        });

        var column = $(this).attr("column");

        if (queryObj.orderType == (column + " desc")) {

            queryObj.orderType = column;
            var thisObj = $(this);
            thisObj.html(thisObj.text() + '<img src="' + ascImg + '"/>');

        } else if (queryObj.orderType == column){

            queryObj.orderType = "";
            var thisObj = $(this);
            thisObj.html(thisObj.text());

        } else {

            queryObj.orderType = (column + " desc");
            var thisObj = $(this);
            thisObj.html(thisObj.text() + '<img src="' + descImg + '"/>');

        }
        dataFunction(queryObj, 1, $("#page_size").val());
    });
};